/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package fonol.entidades;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Fredfred2 
 */
@Entity
@Table(name = "USUARIOS")
@SequenceGenerator(name="seqUsu",allocationSize=1,initialValue=1,sequenceName="USUARIOS_SEQ")
@NamedQueries({@NamedQuery(name = "Usuarios.findByIdusuario", query = "SELECT u FROM Usuarios u WHERE u.idusuario = :idusuario"), 
        @NamedQuery(name = "Usuarios.findByLogin", query = "SELECT u FROM Usuarios u WHERE u.login = :login"), 
        @NamedQuery(name = "Usuarios.findByPass", query = "SELECT u FROM Usuarios u WHERE u.pass = :pass"), 
        @NamedQuery(name = "Usuarios.login", query = "SELECT u FROM Usuarios u WHERE u.pass = :pass and  u.login = :login"),
        @NamedQuery(name = "Usuarios.findByTipo", query = "SELECT u FROM Usuarios u WHERE u.tipo = :tipo"), 
        @NamedQuery(name = "Usuarios.findByFechainicio", query = "SELECT u FROM Usuarios u WHERE u.fechainicio = :fechainicio"), 
        @NamedQuery(name = "Usuarios.findByFechafin", query = "SELECT u FROM Usuarios u WHERE u.fechafin = :fechafin"), 
        @NamedQuery(name = "Usuarios.findByIndefinido", query = "SELECT u FROM Usuarios u WHERE u.indefinido = :indefinido")})
public class Usuarios implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(generator="seqUsu",strategy=GenerationType.SEQUENCE)
    @Column(name = "IDUSUARIO", nullable = false)
    private Integer idusuario;
    @Column(name = "LOGIN",length=9)
    private String login;
    @Column(name = "PASS",length=9)
    private String pass;
    @Enumerated(EnumType.ORDINAL)
    @Column(name = "TIPO")
    private TipoUsuario tipo;
    @Column(name = "FECHAINICIO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechainicio;
    @Column(name = "FECHAFIN")
    @Temporal(TemporalType.DATE)
    private Date fechafin;
    @Column(name = "INDEFINIDO")
    private TipoDefinido indefinido;
        @OneToMany(mappedBy = "usuario")
    private Collection<Gobiernos> gobiernosCollection;
        @OneToMany(mappedBy = "usuario")
    private Collection<Delegados> delegadosCollection;
       

    public Usuarios() {
    }

    public Usuarios(Integer idusuario) {
        this.idusuario = idusuario;
    }

    public Integer getIdusuario() {
        return idusuario;
    }

    public void setIdusuario(Integer idusuario) {
        this.idusuario = idusuario;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public TipoUsuario getTipo() {
        return tipo;
    }

    public void setTipo(TipoUsuario tipo) {
        this.tipo = tipo;
    }

    public Date getFechainicio() {
        return fechainicio;
    }

    public void setFechainicio(Date fechainicio) {
        this.fechainicio = fechainicio;
    }

    public Date getFechafin() {
        return fechafin;
    }

    public void setFechafin(Date fechafin) {
        this.fechafin = fechafin;
    }

    public TipoDefinido getIndefinido() {
        return indefinido;
    }

    public void setIndefinido(TipoDefinido indefinido) {
        this.indefinido = indefinido;
    }

    public Collection<Gobiernos> getGobiernosCollection() {
        return gobiernosCollection;
    }

    public void setGobiernosCollection(Collection<Gobiernos> gobiernosCollection) {
        this.gobiernosCollection = gobiernosCollection;
    }

    public Collection<Delegados> getDelegadosCollection() {
        return delegadosCollection;
    }

    public void setDelegadosCollection(Collection<Delegados> delegadosCollection) {
        this.delegadosCollection = delegadosCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idusuario != null ? idusuario.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuarios)) {
            return false;
        }
        Usuarios other = (Usuarios) object;
        if ((this.idusuario == null && other.idusuario != null) || (this.idusuario != null && !this.idusuario.equals(other.idusuario))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "fonol.entidades.Usuarios[idusuario=" + idusuario + "]";
    }

}
